package com.cddx.logistics.domain.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;

/**
* 菜单权限表
* @TableName sys_permission
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysPermission implements Serializable{

    /**
    * 主键id
    */
    @NotBlank(message="[主键id]不能为空")
    @Size(max= 32,message="编码长度不能超过32")
    @ApiModelProperty("主键id")
    @Length(max= 32,message="编码长度不能超过32")
    private Integer id;
    /**
    * 父id
    */
    @Size(max= 32,message="编码长度不能超过32")
    @ApiModelProperty("父id")
    @Length(max= 32,message="编码长度不能超过32")
    private String parentId;
    /**
    * 菜单标题
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("菜单标题")
    @Length(max= 100,message="编码长度不能超过100")
    private String name;
    /**
    * 路径
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("路径")
    @Length(max= 255,message="编码长度不能超过255")
    private String url;
    /**
    * 组件
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("组件")
    @Length(max= 255,message="编码长度不能超过255")
    private String component;
    /**
    * 组件名字
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("组件名字")
    @Length(max= 100,message="编码长度不能超过100")
    private String componentName;
    /**
    * 一级菜单跳转地址
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("一级菜单跳转地址")
    @Length(max= 255,message="编码长度不能超过255")
    private String redirect;
    /**
    * 菜单类型(0:一级菜单; 1:子菜单:2:按钮权限)
    */
    @ApiModelProperty("菜单类型(0:一级菜单; 1:子菜单:2:按钮权限)")
    private Integer menuType;
    /**
    * 菜单权限编码
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("菜单权限编码")
    @Length(max= 255,message="编码长度不能超过255")
    private String perms;
    /**
    * 权限策略1显示2禁用
    */
    @Size(max= 10,message="编码长度不能超过10")
    @ApiModelProperty("权限策略1显示2禁用")
    @Length(max= 10,message="编码长度不能超过10")
    private String permsType;
    /**
    * 菜单排序
    */
    @ApiModelProperty("菜单排序")
    private Double sortNo;
    /**
    * 聚合子路由: 1是0否
    */
    @ApiModelProperty("聚合子路由: 1是0否")
    private Integer alwaysShow;
    /**
    * 菜单图标
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("菜单图标")
    @Length(max= 100,message="编码长度不能超过100")
    private String icon;
    /**
    * 是否路由菜单: 0:不是  1:是（默认值1）
    */
    @ApiModelProperty("是否路由菜单: 0:不是  1:是（默认值1）")
    private Integer isRoute;
    /**
    * 是否叶子节点:    1:是   0:不是
    */
    @ApiModelProperty("是否叶子节点:    1:是   0:不是")
    private Integer isLeaf;
    /**
    * 是否缓存该页面:    1:是   0:不是
    */
    @ApiModelProperty("是否缓存该页面:    1:是   0:不是")
    private Integer keepAlive;
    /**
    * 是否隐藏路由: 0否,1是
    */
    @ApiModelProperty("是否隐藏路由: 0否,1是")
    private Integer hidden;
    /**
    * 描述
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("描述")
    @Length(max= 255,message="编码长度不能超过255")
    private String description;
    /**
    * 创建人
    */
    @Size(max= 32,message="编码长度不能超过32")
    @ApiModelProperty("创建人")
    @Length(max= 32,message="编码长度不能超过32")
    private String createBy;
    /**
    * 创建时间
    */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date createTime;
    /**
    * 更新人
    */
    @Size(max= 32,message="编码长度不能超过32")
    @ApiModelProperty("更新人")
    @Length(max= 32,message="编码长度不能超过32")
    private String updateBy;
    /**
    * 更新时间
    */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date updateTime;
    /**
    * 删除状态 0正常 1已删除
    */
    @ApiModelProperty("删除状态 0正常 1已删除")
    private Integer delFlag;
    /**
    * 是否添加数据权限1是0否
    */
    @ApiModelProperty("是否添加数据权限1是0否")
    private Integer ruleFlag;
    /**
    * 按钮权限状态(0无效1有效)
    */
    @Size(max= 2,message="编码长度不能超过2")
    @ApiModelProperty("按钮权限状态(0无效1有效)")
    @Length(max= 2,message="编码长度不能超过2")
    private String status;
    /**
    * 外链菜单打开方式 0/内部打开 1/外部打开
    */
    @ApiModelProperty("外链菜单打开方式 0/内部打开 1/外部打开")
    private Integer internalOrExternal;

}
